#######################################################
# this are setting used in SETUP_EXAMPLE macro
#######################################################
SET(TARGET_DEFAULT_PREFIX "example_")
SET(TARGET_DEFAULT_LABEL_PREFIX "Examples")

SET(TARGET_COMMON_LIBRARIES
    OpenThreads
    osg
    osgDB
    osgUtil
    osgGA
    osgViewer
    osgText
)

IF(ANDROID)
    # ADD_SUBDIRECTORY(osgandroidsimple)
ELSE(ANDROID)

IF(DYNAMIC_OPENSCENEGRAPH)

    ADD_SUBDIRECTORY(osgsimpleMDI)
    ADD_SUBDIRECTORY(osg2cpp)
    ADD_SUBDIRECTORY(osganalysis)
    ADD_SUBDIRECTORY(osganimate)
    ADD_SUBDIRECTORY(osgatomiccounter)
    ADD_SUBDIRECTORY(osgautocapture)
    ADD_SUBDIRECTORY(osgautotransform)
    ADD_SUBDIRECTORY(osgbillboard)
    ADD_SUBDIRECTORY(osgblenddrawbuffers)
    ADD_SUBDIRECTORY(osgblendequation)
    ADD_SUBDIRECTORY(osgcallback)
    ADD_SUBDIRECTORY(osgcamera)
    ADD_SUBDIRECTORY(osgcatch)
    ADD_SUBDIRECTORY(osgclip)
    ADD_SUBDIRECTORY(osgcompositeviewer)
    ADD_SUBDIRECTORY(osgcopy)
    ADD_SUBDIRECTORY(osgcubemap)
    ADD_SUBDIRECTORY(osgdeferred)
    ADD_SUBDIRECTORY(osgcluster)
    ADD_SUBDIRECTORY(osgdatabaserevisions)
    ADD_SUBDIRECTORY(osgdepthpartition)
    ADD_SUBDIRECTORY(osgdepthpeeling)
    ADD_SUBDIRECTORY(osgdrawinstanced)
    ADD_SUBDIRECTORY(osgdistortion)
    ADD_SUBDIRECTORY(osgfadetext)
    ADD_SUBDIRECTORY(osgfont)
    ADD_SUBDIRECTORY(osgforest)
    ADD_SUBDIRECTORY(osgfxbrowser)
    ADD_SUBDIRECTORY(osgoutline)
    ADD_SUBDIRECTORY(osggameoflife)
    ADD_SUBDIRECTORY(osggeometry)
    ADD_SUBDIRECTORY(osggeometryshaders)
    ADD_SUBDIRECTORY(osghangglide)
    ADD_SUBDIRECTORY(osghud)
    ADD_SUBDIRECTORY(osgimagesequence)
    ADD_SUBDIRECTORY(osgintersection)
    ADD_SUBDIRECTORY(osgkdtree)
    ADD_SUBDIRECTORY(osgkeyboard)
    ADD_SUBDIRECTORY(osgkeyboardmouse)
    ADD_SUBDIRECTORY(osgkeystone)
    ADD_SUBDIRECTORY(osglauncher)
    ADD_SUBDIRECTORY(osglight)
    ADD_SUBDIRECTORY(osglightpoint)
    ADD_SUBDIRECTORY(osglogicop)
    ADD_SUBDIRECTORY(osglogo)
    ADD_SUBDIRECTORY(osggpucull)
    ADD_SUBDIRECTORY(osggpx)
    ADD_SUBDIRECTORY(osggraphicscost)
    ADD_SUBDIRECTORY(osgmanipulator)
    ADD_SUBDIRECTORY(osgimpostor)
    ADD_SUBDIRECTORY(osgmovie)
    ADD_SUBDIRECTORY(osgmultiplemovies)
    ADD_SUBDIRECTORY(osgmultiplerendertargets)
    ADD_SUBDIRECTORY(osgmultitexture)
    ADD_SUBDIRECTORY(osgmultitexturecontrol)
    ADD_SUBDIRECTORY(osgmultitouch)
    ADD_SUBDIRECTORY(osgmultiviewpaging)
    ADD_SUBDIRECTORY(osgobjectcache)
    ADD_SUBDIRECTORY(osgoccluder)
    ADD_SUBDIRECTORY(osgocclusionquery)
    ADD_SUBDIRECTORY(osgoit)
    ADD_SUBDIRECTORY(osgoscdevice)
    ADD_SUBDIRECTORY(osgpackeddepthstencil)
    ADD_SUBDIRECTORY(osgpagedlod)
    ADD_SUBDIRECTORY(osgparametric)
    ADD_SUBDIRECTORY(osgparticle)
    ADD_SUBDIRECTORY(osgparticleeffects)
    ADD_SUBDIRECTORY(osgparticleshader)
    ADD_SUBDIRECTORY(osgpersistentbufferstorage)
    ADD_SUBDIRECTORY(osgpick)
    ADD_SUBDIRECTORY(osgplanets)
    ADD_SUBDIRECTORY(osgpoints)
    ADD_SUBDIRECTORY(osgpointsprite)
    ADD_SUBDIRECTORY(osgposter)
    ADD_SUBDIRECTORY(osgprecipitation)
    ADD_SUBDIRECTORY(osgprerender)
    ADD_SUBDIRECTORY(osgprerendercubemap)
    ADD_SUBDIRECTORY(osgreflect)
    ADD_SUBDIRECTORY(osgrobot)
    ADD_SUBDIRECTORY(osgSSBO)
    ADD_SUBDIRECTORY(osgsampler)
    ADD_SUBDIRECTORY(osgscalarbar)
    ADD_SUBDIRECTORY(osgscribe)
    ADD_SUBDIRECTORY(osgsequence)
    ADD_SUBDIRECTORY(osgshaders)
    ADD_SUBDIRECTORY(osgshaderpipeline)
    ADD_SUBDIRECTORY(osgshadercomposition)
    ADD_SUBDIRECTORY(osgshadergen)
    ADD_SUBDIRECTORY(osgshadermultiviewport)
    ADD_SUBDIRECTORY(osgshaderterrain)
    # ADD_SUBDIRECTORY(osgshadercompositor)
    ADD_SUBDIRECTORY(osgshadow)
    ADD_SUBDIRECTORY(osgshape)
    ADD_SUBDIRECTORY(osgsharedarray)
    ADD_SUBDIRECTORY(osgsimpleshaders)
    ADD_SUBDIRECTORY(osgsimplifier)
    ADD_SUBDIRECTORY(osgsimulation)
    ADD_SUBDIRECTORY(osgsidebyside)
    ADD_SUBDIRECTORY(osgslice)
    ADD_SUBDIRECTORY(osgspacewarp)
    ADD_SUBDIRECTORY(osgspheresegment)
    ADD_SUBDIRECTORY(osgspotlight)
    ADD_SUBDIRECTORY(osgstereoimage)
    ADD_SUBDIRECTORY(osgstereomatch)
    ADD_SUBDIRECTORY(osgterrain)
    ADD_SUBDIRECTORY(osgthreadedterrain)
    ADD_SUBDIRECTORY(osgtransferfunction)
    ADD_SUBDIRECTORY(osgtext)
    ADD_SUBDIRECTORY(osgtext3D)
    ADD_SUBDIRECTORY(osgtexture1D)
    ADD_SUBDIRECTORY(osgtexture2D)
    ADD_SUBDIRECTORY(osgtexture2DArray)
    ADD_SUBDIRECTORY(osgtexture3D)
    ADD_SUBDIRECTORY(osgtexturerectangle)
    ADD_SUBDIRECTORY(osgtexturecompression)
    ADD_SUBDIRECTORY(osgthirdpersonview)
    ADD_SUBDIRECTORY(osgtransformfeedback)
    ADD_SUBDIRECTORY(osguniformbuffer)
    ADD_SUBDIRECTORY(osguserstats)
    ADD_SUBDIRECTORY(osgvertexprogram)
    ADD_SUBDIRECTORY(osgvertexattributes)
    ADD_SUBDIRECTORY(osgvolume)
    ADD_SUBDIRECTORY(osgwindows)
    ADD_SUBDIRECTORY(osgvirtualprogram)
    ADD_SUBDIRECTORY(osganimationhardware)
    ADD_SUBDIRECTORY(osganimationtimeline)
    ADD_SUBDIRECTORY(osganimationnode)
    ADD_SUBDIRECTORY(osganimationmakepath)
    ADD_SUBDIRECTORY(osganimationmorph)
    ADD_SUBDIRECTORY(osganimationskinning)
    ADD_SUBDIRECTORY(osganimationsolid)
    ADD_SUBDIRECTORY(osganimationviewer)
    ADD_SUBDIRECTORY(osganimationeasemotion)
    ADD_SUBDIRECTORY(osgwidgetaddremove)
    ADD_SUBDIRECTORY(osgwidgetbox)
    ADD_SUBDIRECTORY(osgwidgetcanvas)
    ADD_SUBDIRECTORY(osgwidgetframe)
    ADD_SUBDIRECTORY(osgwidgetinput)
    ADD_SUBDIRECTORY(osgwidgetlabel)
    ADD_SUBDIRECTORY(osgwidgetmessagebox)
    ADD_SUBDIRECTORY(osgwidgetmenu)
    ADD_SUBDIRECTORY(osgwidgetnotebook)
    ADD_SUBDIRECTORY(osgwidgetperformance)
    ADD_SUBDIRECTORY(osgwidgetscrolled)
    ADD_SUBDIRECTORY(osgwidgetshader)
    ADD_SUBDIRECTORY(osgwidgetstyled)
    ADD_SUBDIRECTORY(osgwidgettable)
    ADD_SUBDIRECTORY(osgwidgetwindow)
    ADD_SUBDIRECTORY(osguserdata)
    # GL3/GL4 example
    ADD_SUBDIRECTORY(osgsimplegl3)
    ADD_SUBDIRECTORY(osgbindlesstext)
    IF(OSG_CPP_EXCEPTIONS_AVAILABLE)
        ADD_SUBDIRECTORY(osgunittests)
        ADD_SUBDIRECTORY(osgmemorytest)
    ENDIF()

    IF(NOT OSG_GL3_AVAILABLE)
        ADD_SUBDIRECTORY(osgfpdepth)
    ENDIF()

    IF(NOT OSG_GLES1_AVAILABLE AND NOT OSG_GLES2_AVAILABLE AND NOT OSG_GLES3_AVAILABLE AND NOT OSG_GL3_AVAILABLE)
        ADD_SUBDIRECTORY(osgscreencapture)
        ADD_SUBDIRECTORY(osgmotionblur)
        ADD_SUBDIRECTORY(osgteapot)
    ENDIF()

    # GLES3 example
    IF(EGL_FOUND AND OSG_GLES3_AVAILABLE)
        ADD_SUBDIRECTORY(osgsimpleGLES3)
    ENDIF()

    ADD_SUBDIRECTORY(osgphotoalbum)
    ADD_SUBDIRECTORY(osgtessellate)
    ADD_SUBDIRECTORY(osgtessellationshaders)
    ADD_SUBDIRECTORY(osgcomputeshaders)

    ADD_SUBDIRECTORY(osgpdf)

    IF   (SDL_FOUND)
        ADD_SUBDIRECTORY(osgviewerSDL)
    ENDIF(SDL_FOUND)

    IF   (GTKGL_FOUND)
        ADD_SUBDIRECTORY(osgviewerGTK)
    ENDIF(GTKGL_FOUND)

    IF   (FOX_FOUND)
        ADD_SUBDIRECTORY(osgviewerFOX)
    ENDIF(FOX_FOUND)

    IF   (wxWidgets_FOUND AND CMAKE_BUILD_TYPE)
        IF (${CMAKE_BUILD_TYPE} STREQUAL "Release")
            ADD_SUBDIRECTORY(osgviewerWX)
        ENDIF()
    ENDIF()

    IF   (FLTK_FOUND AND FLTK_GL_LIBRARY)
        ADD_SUBDIRECTORY(osgviewerFLTK)
    ENDIF()

    IF   (WIN32)

        OPTION(BUILD_MFC_EXAMPLE "Enable the build of the MFC Example" OFF)

        IF   (BUILD_MFC_EXAMPLE)
            ADD_SUBDIRECTORY(osgviewerMFC)
        ENDIF(BUILD_MFC_EXAMPLE)

    ENDIF(WIN32)

    IF   (APPLE)
        ADD_SUBDIRECTORY(osgviewerCocoa)
    ENDIF(APPLE)

    IF(DIRECTINPUT_FOUND)
       ADD_SUBDIRECTORY(osgdirectinput)
    ENDIF(DIRECTINPUT_FOUND)

    IF   (LIBVNCSERVER_FOUND)
        ADD_SUBDIRECTORY(osgvnc)
    ENDIF(LIBVNCSERVER_FOUND)

    #to add subject to find socket#ADD_SUBDIRECTORY(osgcluster)

ELSE(DYNAMIC_OPENSCENEGRAPH)
    #needed on win32 or the linker get confused by _declspec declarations
    ADD_DEFINITIONS(-DOSG_LIBRARY_STATIC)

    IF(OSG_BUILD_PLATFORM_IPHONE)
        ADD_SUBDIRECTORY(osgviewerIPhone)
    ELSE()
        ADD_SUBDIRECTORY(osgstaticviewer)
    ENDIF()

ENDIF(DYNAMIC_OPENSCENEGRAPH)

ENDIF(ANDROID)
